Short-circuit get_frame_extents for override-redirect windows
authorMatthias Clasen <mclasen@redhat.com>
Fri, 27 Nov 2009 23:17:33 +0000 (18:17 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 27 Nov 2009 23:19:20 +0000 (18:19 -0500)
There's no reason to do our expensive round-trips for an override-redirect
window; just use local information. See bug 581145. Patch by Owen Taylor.

gdk/x11/gdkwindow-x11.c

index 5f3c13e9c4c65b8e7f3862bd657b5060aa8090cc..6e79ff86440bbd1fd72f50f9e529082574ce7b87 100644 (file)
@@ -2920,6 +2920,7 @@ gdk_window_get_frame_extents (GdkWindow    *window,
 {
   GdkDisplay *display;
   GdkWindowObject *private;
+  GdkWindowImplX11 *impl;
   Window xwindow;
   Window xparent;
   Window root;
@@ -2955,7 +2956,8 @@ gdk_window_get_frame_extents (GdkWindow    *window,
   rect->y = private->y;
   gdk_drawable_get_size ((GdkDrawable *)private, &rect->width, &rect->height);
 
-  if (GDK_WINDOW_DESTROYED (private))
+  impl = GDK_WINDOW_IMPL_X11 (private->impl);
+  if (GDK_WINDOW_DESTROYED (private) || impl->override_redirect)
     return;
 
   nvroots = 0;